package lv.clientedisqueria.model.grupo;

import java.util.ArrayList;
import java.util.List;


import lv.clientedisqueria.model.DisqueriaTablaModelo;
import lv.clientedisqueria.model.Modelo;
import lv.mensajeriadisqueria.dto.GrupoDto;
import lv.mensajeriadisqueria.idomain.IGrupo;

public class GrupoModel extends Modelo<IGrupo>{
	
	private final GrupoTablaModel grupoTablaModel;
	List<IGrupo> grupos;
	private final static String PROPERTY_CHANGE_CAMBIAR_GRUPO = "cambiarGrupo";

	public GrupoModel(){
		this.grupoTablaModel=new GrupoTablaModel(this);
	}
	public GrupoTablaModel getGrupoTablaModel() {
		return grupoTablaModel;
	}

	@Override
	public List<IGrupo> buscarTodos() {
		grupos=new ArrayList<IGrupo>();
		GrupoDto grupoDto=new GrupoDto("Grupo1");
		grupoDto.setIdGrupo(1);
		this.grupos.add(grupoDto);
		GrupoDto grupoDto2=new GrupoDto("Grupo2");
		grupoDto2.setIdGrupo(2);
		this.grupos.add(grupoDto2);
		GrupoDto grupoDto3=new GrupoDto("Grupo3");
		grupoDto3.setIdGrupo(3);
		this.grupos.add(grupoDto3);
	return grupos;
	}

	@Override
	public String getPropertyChangeCambio() {
		return PROPERTY_CHANGE_CAMBIAR_GRUPO;
	}

	public void insertar() {
		grupoTablaModel.adherirOModificar(new GrupoDto());
		notificar(Modelo.INSERTAR);	}
	
	public void modificar() {
		notificar(Modelo.MODIFICAR);		
	}
	public void borrar() {
		// TODO aca hay que llamar al clienteserver para que haga el pedido
		grupoTablaModel.remover();
		notificar(Modelo.BORRAR);		
	}
	public void guardar(IGrupo grupo) {
		// TODO Aca hay que llamar al server para guardar el objeto.
		grupoTablaModel.adherirOModificar(grupo);
		notificar(Modelo.GUARDADO);		
	}
	@Override
	public DisqueriaTablaModelo<IGrupo> getTablaModel() {
		return grupoTablaModel;
	}

}

